home *** CD-ROM | disk | FTP | other *** search
Text File | 2002-05-10 | 62.0 KB | 2,025 lines |
- func void MSComponentDestroy(Gui_Component _poComponent)
- {
- DeleteComponent(_poComponent);
- }
-
- // ******************************************************
- // * Function : Player server connect/disconnect callback
- // * Parameters : client : client connected/disconnected
- // *
- // * Add/Remove the client to/from the client list
- // ****** *************************************************
- func void GuestConnectCB(Net_Client _client)
- {
- var Gui_Component pthis;
- var CGuestUser pdtData;
- var CBasicGuest pdtBasicGuestData;
- var CLoginGuest pdtLoginGuestData;
- var Gui_Component pComponent;
-
- print("<< guest connection: waiting for login...\n");
-
- // get this pointer
- pthis = GetThis();
-
- // new component
- pComponent = NewObject(iGuestUserInterface);
- MountComponent(pthis, pComponent);
- NetClient_SetComponent(_client, pComponent);
-
- // new common data
- pdtData = new CGuestUser;
- SetData(pComponent,pdtData);
-
- // init data
- pdtData.m_iUserId = 0;
- pdtData.m_pClient = _client;
-
- // guest interface
- pdtBasicGuestData = new CBasicGuest;
- AddInterface( pComponent , iGuestInterface, pdtBasicGuestData);
-
- // login interface
- pdtLoginGuestData = new CLoginGuest;
- AddInterface( pComponent , iGuestLoginInterface, pdtLoginGuestData);
- }
-
- func void GuestDisconnectCB (Net_Client _client)
- {
- print("guest disconnection.\n");
-
- var Gui_Component pthis;
- pthis = GetThis();
- g_pAncestorComponent << ComponentDestroy(pthis);
- }
-
- func void UserDisconnectCB (Net_Client _client)
- {
- var i32x iUserId;
- var i32x iPreRaceTeamId;
-
- var Gui_Component pthis;
- var CGuestUser pdtPrimaryData;
- var CBasicUser pdtData;
- pthis = GetThis();
- pdtData = GetData(pthis);
- pdtPrimaryData = GetPrimaryData(pthis);
-
-
- iUserId = pdtPrimaryData.m_iUserId;
- println("user disconnection : " + itoa(iUserId));
-
- // update database
- Join_SetIntFromIndex( g_stJoins.m_iGame_iNumConnected, 0, Join_GetIntFromIndex( g_stJoins.m_iGame_iNumConnected, 0 ) - 1);
- Join_SetIntFromKey(g_stJoins.m_iUser_iInRaceReady, iUserId, 0);
- Join_SetIntFromKey(g_stJoins.m_iUser_iConnected, iUserId, 0);
-
- // inrace ?
- // Client disconnected while in race
- // Remove game client of Game Server
- if (GetGameServerState()==1)
- {
- RemoveClient(iUserId);
- }
-
- // notify users
- Database_SendSynchronization(DATABASE_SERVER);
-
- g_pAncestorComponent << ComponentDestroy(pthis);
- }
-
-
-
-
- // *********************
- // user login
- // *********************
- func void fnMSUserLogin (szx _szLogin, szx _szPassword )
- {
-
- var i32x ok;
-
- // get client
- var Net_Client client;
- client = GetCurrentClient();
-
- var i32x i;
- var i32x iUserID,iTeamID,guestok;
- var i32x iPreRaceTeamId;
- var szx szAuthorization;
-
- var CSubscribeGuest pdtSubscribeGuestData;
- var CInRaceUser pdtInRaceUserData;
- var CBasicUser pdtUserData;
-
- var Gui_Component pthis;
- var CGuestUser pdtPrimaryData;
- var CLoginGuest pdtData;
- pthis = GetThis();
- pdtData = GetData(pthis);
- pdtPrimaryData = GetPrimaryData(pthis);
-
-
- print( _szLogin + ":" + _szPassword + " trying to login..\n");
-
-
- ok = 1;
- iUserID = -1;
- iTeamID = -1;
-
- // get user
- iUserID = Join_FindKeyFromStringData(g_stJoins.m_iUser_szLogin, _szLogin);
- if (iUserID == -1)
- {
- // Guest connection
- print(_szLogin + " login as guest\n");
- guestok = 1;
-
- if(guestok==1)
- {
- // new login
- pdtPrimaryData.m_szLogin = _szLogin;
- pdtPrimaryData.m_szPassword = _szPassword;
-
-
- // remove login interface
- RemoveInterface(pthis);
-
- if(!IsGameModeEnded())
- {
- pdtSubscribeGuestData = new CSubscribeGuest;
- AddInterface( pthis , iGuestSubscribeInterface, pdtSubscribeGuestData);
- }
-
- // notify clients
- Database_SendSynchronization(DATABASE_SERVER);
-
- // send database
- Database_Send(DATABASE_SERVER,"ServerDB",client);
-
- // Inform client
- client << mUser_GameGuestOK();
- }
- }
- else
- {
- print(_szLogin + " login as user "+itoa(iUserID) +"\n");
-
- // Registered user connection
-
-
- // password
- if (ok==1)
- {
- if (strcmp(Join_GetStringFromKey(g_stJoins.m_iUser_szPassword, iUserID),_szPassword)!=0)
- {
- println("wrong password : " + Join_GetStringFromKey(g_stJoins.m_iUser_szPassword, iUserID) + +":" + _szPassword);
- ok = 0;
- }
- }
-
- // get team
- if (ok==1)
- {
- iTeamID = Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId, iUserID);
- if (iTeamID == -1)
- {
- println("No team for user " + itoa(iUserID));
- ok = 0;
- }
- }
-
- // verify that a user with the same login is already connected
- if (ok==1)
- {
- if (Join_GetIntFromKey( g_stJoins.m_iUser_iConnected, iUserID)==1)
- {
- print("duplicated login\n");
- ok = 0;
- }
- }
-
- // add client
- if (ok==1)
- {
- // reuse login
- pdtPrimaryData.m_szLogin = _szLogin;
- pdtPrimaryData.m_szPassword = _szPassword;
- pdtPrimaryData.m_iUserId = iUserID;
-
- // update database
- Join_SetIntFromIndex( g_stJoins.m_iGame_iNumConnected, 0, Join_GetIntFromIndex( g_stJoins.m_iGame_iNumConnected, 0 ) + 1);
- Join_SetStringFromKey( g_stJoins.m_iUser_szPassword, iUserID, _szPassword);
- Join_SetIntFromKey( g_stJoins.m_iUser_iConnected, iUserID, 1);
-
- // inrace ?
- if(GetGameServerState()==1)
- {
- Join_SetIntFromKey(g_stJoins.m_iUser_iInRaceReady, iUserID, 0);
- iPreRaceTeamId = Join_GetIntFromKey(g_stJoins.m_iUser_iPreRaceTeamId, iUserID);
- }
-
- // inform client
- client << mUser_GameLoginOK (iUserID);
-
-
- // notify clients
- Database_SendSynchronization(DATABASE_SERVER);
-
- // send database
- Database_Send(DATABASE_SERVER,"ServerDB",client);
-
-
-
-
- if(!IsGameModeEnded())
- {
- // remove login interface
- RemoveInterface(pthis);
-
- // remove guest interface
- RemoveInterface(pthis);
-
- // user interface instead of guest interface
- pdtUserData = new CBasicUser;
- AddInterface(pthis,iUserInterface,pdtUserData);
-
- if(GetGameServerState()==1)
- {
- // inrace interface
- pdtInRaceUserData = new CInRaceUser;
- AddInterface(pthis,iInRace,pdtInRaceUserData);
-
- // Client connected while in race
- // Add game client to Game Server
- if(iPreRaceTeamId != -1)
- {
- print("Adding client to resolution server.\n");
- client << mUser_InRaceStart(iPreRaceTeamId);
- }
- }
-
- }
- /*
- else
- {
- // Set client to game over
- NetClient_SetInterface(client,iGameOver);
- }
- */
- }
- else
- {
- NetClient_Disconnect(client);
- }
- }
- }
-
-
-
-
-
-
-
-
- // *********************
- // *** Admin command ***
- // *********************
-
-
-
-
-
-
- func void fnAdminKickUser(szx _szLogin)
- {
- /*var Net_Client pClient;
- var Net_ClientList pClientList;
-
- var i32x iUserID;
- var i32x iKickUserID;
-
- // get client
- pClient = GetCurrentClient();
- iUserID = NetClient_GetId(pClient);
-
- iKickUserID = Join_FindKeyFromStringData(g_stJoins.m_iUser_szLogin, _szLogin);
- if (iKickUserID>0)
- {
- if (iKickUserID!=iUserID)
- {
- // kick user
- println("admin kicks out user" + _szLogin);
-
- // get client
- pClientList = NetServer_GetClientList(g_pServer,G_iRegisteredClientList);
- pClient = NetClientList_FindClient(pClientList,iKickUserID);
-
- // unsubscribe & Disconnect
- fnDBUnsubscribeUser(iKickUserID);
- if (pClient)
- NetClient_Disconnect(pClient);
- }
- Database_SendSynchronization(DATABASE_SERVER);
- }*/
- }
-
- // valid next phase
- func void fnGameVote_Test()
- {
- var i32x iUserID,iNumUsers,iUser,iContinue,iNextRace,bWait;
-
- //Database_HTMLDebugPrint(DATABASE_SERVER);
- bWait = false;
- iContinue = 0;
- iNextRace = 0;
- iUser = 0;
- iNumUsers = Join_GetNumRows(g_stJoins.m_iUser_iLaunchGame);
- print("iNumUsers:"+itoa(iNumUsers)+"\n");
- while(iUser<iNumUsers)
- {
- if(Join_GetIntFromIndex(g_stJoins.m_iUser_iConnected,iUser) == 1)
- {
- if(Join_GetIntFromIndex(g_stJoins.m_iUser_iState,iUser) == 2)
- {
- iContinue = iContinue + 1;
- }
- else if(Join_GetIntFromIndex(g_stJoins.m_iUser_iState,iUser) == 3)
- {
- iNextRace = iNextRace + 1;
- }
- else
- {
- // One is waiting
- bWait = true;
- print("User:"+itoa(iUser)+" Waiting\n");
- }
- }
- iUser = iUser + 1;
- }
-
- if(!bWait)
- {
- // Are we in race ?
- if(GetGameServerState()==0)
- {
- // Reset ready flags
- iUser = 0;
- while(iUser<iNumUsers)
- {
- Join_SetIntFromIndex(g_stJoins.m_iUser_iState,iUser,1);
- iUser = iUser + 1;
- }
- // *********************************
- // HADES DEBUG DAY TURN TEST IA
- // Jump to next day / event
- //print("Hades Debug Next day...\n");
- //DayTurn();
- // *********************************
-
- if(GetCurrentDay() != Join_GetIntFromKey(g_stJoins.m_iStage_iDay,GetCurrentStageID()) )
- {
- if(iContinue>=iNextRace)
- {
- // Jump to next day / event
- print("Next day...\n");
- DayTurn();
- }
- else
- {
- // Jump to next race
- print("Next race...\n");
- SetDayOfStage();
- }
- }
- else
- {
- if(iNextRace==0)
- {
- // Prepare race
- print("Prepare race...\n");
- PrepareForRace();
- }
- else
- {
- print("### WARNING KLOD DAY TURN ###\n");
- DayTurn();
- SaveDatabase();
- }
- }
-
- }
- else
- {
- // Yes : wait for end of race
- print("Wait for end of race...\n");
- }
- }
- }
-
-
-
-
-
- // *********************
- // user subscribe
- // *********************
- func void fnUserSubscribe(i32x _iTeamID)
- {
- var Net_Client pClient;
-
- var i32x iUserID;
- var i32x iPreRaceTeamId;
-
- var CBasicUser pdtUserData;
- var CInRaceUser pdtInRaceData;
-
- var Gui_Component pthis;
- var CGuestUser pdtPrimaryData;
- var CSubscribeGuest pdtData;
- pthis = GetThis();
- pdtData = GetData(pthis);
- pdtPrimaryData = GetPrimaryData(pthis);
-
- // get client
- pClient = pdtPrimaryData.m_pClient;
-
- // auto assign
- if (_iTeamID == -1)
- {
- _iTeamID = Join_FindKeyFromIntData( g_stJoins.m_iTeam_iUserId, 0);
- if (_iTeamID!=-1)
- {
- println("auto assign " + itoa(_iTeamID));
- }
- else
- {
- println("auto assign failed : no team available");
- }
- }
-
- println("<< guest client trying to subscribe team :" + Join_GetStringFromKey(g_stJoins.m_iTeam_szName,_iTeamID ));
-
- // Check if team has no human manager
- if (_iTeamID != -1)
- {
- if (Join_GetIntFromKey( g_stJoins.m_iTeam_iUserId, _iTeamID)==0)
- {
- // subscribe user
- iUserID = fnDBSubscribeUser(pdtPrimaryData.m_szLogin,pdtPrimaryData.m_szPassword,_iTeamID);
- if (iUserID>0)
- {
- // Change client identifier to UserID
- pdtPrimaryData.m_iUserId= iUserID;
-
- // connection in DB
- Join_SetIntFromKey( g_stJoins.m_iUser_iConnected, iUserID, 1);
-
- // inform client
- pClient << mUser_GameSubscribeOK ( iUserID );
-
- // Synchronize client DB
- Database_SendSynchronization(DATABASE_SERVER);
-
- // copy guest data in user data
- pdtUserData = new CBasicUser;
-
- // remove subscribe interface
- RemoveInterface(pthis);
-
- // remove guest interface
- RemoveInterface(pthis);
-
- // user interface
- AddInterface(pthis,iUserInterface,pdtUserData);
-
- // inrace ?
- if(GetGameServerState()==1)
- {
- // check that team is inrace
- iPreRaceTeamId = Join_GetIntFromKey(g_stJoins.m_iUser_iPreRaceTeamId, iUserID);
- if (iPreRaceTeamId!=-1)
- {
- // inrace interface
- pdtInRaceData = new CInRaceUser;
- AddInterface(pthis,iInRace,pdtInRaceData);
-
- print("Adding client to resolution server.\n");
- pClient << mUser_InRaceStart(iPreRaceTeamId);
- }
- else
- {
- print("Team ID "+ itoa(_iTeamID) + " not in race !\n");
- }
- }
- }
- }
- else
- {
- // team not free
- println("Team not free !");
-
- // inform client
- pClient<<mUser_GameSubscribeCancel();
- }
- }
- }
-
-
- // *********************
- // user Unsubscribe
- // *********************
- func void fnUserUnsubscribeNull()
- {
- }
- func void fnUserUnsubscribe()
- {
- var i32x iUserID;
- var i32x iTeamID;
- var i32x iPreRaceTeamId;
-
- var Net_Client pClient;
-
- var CBasicGuest pdtGuestData;
- var CSubscribeGuest pdtSubscribeGuestData;
-
- var Gui_Component pthis;
- var CGuestUser pdtPrimaryData;
- var CBasicUser pdtData;
- pthis = GetThis();
- pdtData = GetData(pthis);
- pdtPrimaryData = GetPrimaryData(pthis);
-
- // Client is a registered user
- iUserID = pdtPrimaryData.m_iUserId;
-
- // Retrieve team id of client
- iTeamID = Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,iUserID);
- println("<< client trying to unsubscribe from team :" + Join_GetStringFromKey(g_stJoins.m_iTeam_szName,iTeamID ) + "...");
-
- // connected user
- pClient = pdtPrimaryData.m_pClient;
-
- // remove user interface
- RemoveInterface(pthis);
-
- // guest interface
- pdtGuestData = new CBasicGuest;
- AddInterface(pthis,iGuestInterface,pdtGuestData);
-
- // subscibe interface
- pdtSubscribeGuestData = new CSubscribeGuest;
- AddInterface(pthis,iGuestSubscribeInterface,pdtSubscribeGuestData);
-
- // Inform client
- pClient << mUser_GameUnsubscribeOK();
-
-
-
- fnDBUnsubscribeUser(iUserID);
- }
-
- func void fnUserInRaceUnsubscribe()
- {
- var i32x iUserID;
- var i32x iPreRaceTeamId;
-
- var Gui_Component pthis;
- var CGuestUser pdtPrimaryData;
- var CInRaceUser pdtData;
- pthis = GetThis();
- pdtData = GetData(pthis);
- pdtPrimaryData = GetPrimaryData(pthis);
-
-
- // check that team is inrace
- iPreRaceTeamId = Join_GetIntFromKey(g_stJoins.m_iUser_iPreRaceTeamId, pdtPrimaryData.m_iUserId);
- if (iPreRaceTeamId!=-1)
- {
- // remove inrace interface
- RemoveInterface(pthis);
- }
-
-
- fnUserUnsubscribe();
- }
-
-
- // **************************************************************
- // * chat
- // **************************************************************/
- func void fnGame_Chat(i32x _iSendToBitfield, szx _szMessage)
- {
- var i32x i;
-
- var i32x iNumClients;
- var Gui_Component pComponent;
- var CGuestUser pdtData;
- var i32x iSendUserId;
-
- var i32x iUserId;
- var Gui_Component pthis;
- var CGuestUser pdtPrimaryData;
- pthis = GetThis();
- pdtPrimaryData = GetPrimaryData(pthis);
- iUserId = pdtPrimaryData.m_iUserId;
-
- i=0;
- iNumClients = GetComponentNumber(g_pAncestorComponent);
- while(i<iNumClients)
- {
- pComponent = GetComponent( g_pAncestorComponent, i);
- if (pComponent)
- {
- pdtData = GetPrimaryData( pComponent);
- iSendUserId = pdtData.m_iUserId;
-
- // only registered user
- if (iSendUserId>0)
- {
- // broadcast or user
- if ((GetBit(_iSendToBitfield,0)) || (GetBit(_iSendToBitfield,iSendUserId)))
- {
- pdtData.m_pClient << mUser_Chat( iUserId, _szMessage);
- }
- }
- }
- i=i+1;
- }
- }
-
-
- // *** database ***
- func void fnUserToServerDatabase_Data(szx _szDatabaseName)
- {
- var i32x iDatabase;
-
- var Net_Client pClient;
- var i32x iUserID;
- var Gui_Component pthis;
- var CGuestUser pdtPrimaryData;
- pthis = GetThis();
- pdtPrimaryData = GetPrimaryData(pthis);
- iUserID = pdtPrimaryData.m_iUserId;
- pClient = pdtPrimaryData.m_pClient;
-
- print(_szDatabaseName + " database from user" + itoa(iUserID) + " received\n" );
-
- if (strcmp(_szDatabaseName,"TutuDB")==0)
- {
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"ClientDB",pClient);
-
- /// *** ///
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"ReadyDB")==0)
- {
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"ReadyDB",pClient);
-
- /// Read data
- fnReadDB_Ready(iUserID,iDatabase);
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"InviteDB")==0)
- {
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"InviteDB",pClient);
-
- /// Read data
- fnReadDB_Invite(iUserID,iDatabase);
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"RosterDB")==0)
- {
- var i32x iRet;
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"RosterDB",pClient);
-
- /// Read data
- iRet = fnReadDB_Roster(iUserID,iDatabase);
- print("Return:"+itoa(iRet)+"\n");
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"StratZone_DB")==0)
- {
- //read strategy zones database
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"StratZone_DB",pClient);
- /// Read data
- fnReadDB_StratZone(iUserID,iDatabase);
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"CyclistStrat_DB")==0)
- {
- //read cyclist strategy database
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"CyclistStrat_DB",pClient);
- /// Read data
- fnReadDB_CyclistStrat(iUserID,iDatabase);
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"TrainingWeekDB")==0)
- {
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"TrainingWeekDB",pClient);
-
- /// Read data
- fnReadDB_TrainingWeek(iUserID,iDatabase);
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"TrainingSeasonDB")==0)
- {
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"TrainingSeasonDB",pClient);
-
- /// Read data
- fnReadDB_TrainingSeason(iUserID,iDatabase);
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"PropositionCyclistDB")==0)
- {
- var i32x iRet;
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"PropositionCyclistDB",pClient);
-
- /// Read data
- iRet = fnReadDB_PropositionCyclist(iUserID,iDatabase);
- print("Return:"+itoa(iRet)+"\n");
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"PropositionSponsorDB")==0)
- {
- var i32x iRet;
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"PropositionSponsorDB",pClient);
-
- /// Read data
- iRet = fnReadDB_PropositionSponsor(iUserID,iDatabase);
- print("Return:"+itoa(iRet)+"\n");
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"PropositionLayoffDB")==0)
- {
- var i32x iRet;
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"PropositionLayoffDB",pClient);
-
- /// Read data
- iRet = fnReadDB_PropositionLayoff(iUserID,iDatabase);
- print("Return:"+itoa(iRet)+"\n");
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"PropositionTransfertDB")==0)
- {
- var i32x iRet;
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"PropositionTransfertDB",pClient);
-
- /// Read data
- iRet = fnReadDB_PropositionTransfert(iUserID,iDatabase);
- print("Return:"+itoa(iRet)+"\n");
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"StaffRoleDB")==0)
- {
- var i32x iRet;
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"StaffRoleDB",pClient);
-
- /// Read data
- iRet = fnReadDB_StaffRole(iUserID,iDatabase);
- print("Return:"+itoa(iRet)+"\n");
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"HireStaffDB")==0)
- {
- var i32x iRet;
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"HireStaffDB",pClient);
-
- /// Read data
- iRet = fnReadDB_HireStaff(iUserID,iDatabase);
- print("Return:"+itoa(iRet)+"\n");
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"LayoffStaffDB")==0)
- {
- var i32x iRet;
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"LayoffStaffDB",pClient);
-
- /// Read data
- iRet = fnReadDB_LayoffStaff(iUserID,iDatabase);
- print("Return:"+itoa(iRet)+"\n");
-
- Database_Destructor(iDatabase);
- }
- else if (strcmp(_szDatabaseName,"Cyclist Equipment Selection")==0)
- {
- iDatabase = Database_Constructor(_szDatabaseName);
- Database_Receive(iDatabase,"Cyclist Equipment Selection",pClient);
- /// Read data
- fnReadDB_EquipmentSelection(iUserID,iDatabase);
- Database_Destructor(iDatabase);
- }
- }
-
- func i32x fnReadDB_Roster(i32x _iUserId,i32x _iDatabase)
- {
- var i32x i,iDBTeamId,iDBAnswer,iOk;
- var i32x iNumCyclistsToRegister;
- var szx szTxt,szCyclist,szJoin;
- szCyclist = "fkIDcyclist_";
-
- iDBTeamId = Database_GetIntData(_iDatabase,"DYN_team.IDteam",ROW_INDEX,0);
- iNumCyclistsToRegister = 9;
- if(Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId) == iDBTeamId)
- {
- // Read roster
- iOk = true;
- i=0;
- while(i<iNumCyclistsToRegister)
- {
- szJoin = "DYN_team."+szCyclist+itoa(i+1);
- g_iRoster[i] = Database_GetIntData(_iDatabase,szJoin,ROW_INDEX,0);
- i = i + 1;
- }
-
- // Check roster
- i=0;
- while(i<iNumCyclistsToRegister)
- {
- if(g_iRoster[i]==0)
- {
- iOk = false;
- }
- else if(Join_GetIntFromKey(g_stJoins.m_iCyclist_iTeamId,g_iRoster[i])!=iDBTeamId)
- {
- iOk = false;
- }
- i=i+1;
- }
- if(iOk)
- {
- // Update roster
- i=0;
- while(i<iNumCyclistsToRegister)
- {
- Join_SetIntFromKey(g_stJoins.m_iTeam_iRacerId[i],iDBTeamId,g_iRoster[i]);
- i = i + 1;
- }
- return 1;
- }
- else
- {
- print("### Invalid RosterDB ###\n");
- return 0;
- }
- }
- print("### Invalid RosterDB ###\n");
- return 0;
- }
-
- func i32x fnReadDB_StaffRole(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iDBTeamId,iDBAnswer;
- var i32x i,iNumRows,iSubset,iJoinStaffRole,iJoinStaffId,iRoleID,iStaffId;
-
- iSubset = Subset_Constructor("STAFFTEAM",_iDatabase);
- Database_AddTables(iSubset,1);
- Table_SetName(iSubset, 0, "DYN_staff");
- TableSubset_SelectColumns(iSubset, 0, "*");
-
- Query_Create(0,iSubset);
- Query_SelectTable( 0, "DYN_staff");
- Query_SelectWhereIntEqual(0,"DYN_staff.fkIDteam", Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId));
- Query_Execute(0);
-
- iJoinStaffId = Join_Constructor(iSubset,"DYN_staff.IDstaff");
- iJoinStaffRole = Join_Constructor(iSubset,"DYN_staff.fkIDstaff_role");
- iNumRows = Join_GetNumRows(iJoinStaffRole);
- i=0;
- while(i<iNumRows)
- {
- iStaffId = Join_GetIntFromIndex(iJoinStaffId,i);
- iRoleID = Join_GetIntFromIndex(iJoinStaffRole,i);
-
- // Update role
- Join_SetIntFromKey(g_stJoins.m_iStaff_iRoleId,iStaffId,iRoleID);
-
- i=i+1;
- }
- Join_Destructor(iJoinStaffId);
- Join_Destructor(iJoinStaffRole);
- Subset_Destructor(iSubset);
-
- if(iNumRows== 0)
- return 0;
-
-
- return 1;
- }
- func i32x fnReadDB_HireStaff(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iNumRows,iTeamID,iStaffId,iTable,iStaffTeamId;
-
- iTeamID = Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
-
- iTable = Table_GetIndexFromName(_iDatabase,"DYN_staff");
- if(iTable>=0)
- {
- iNumRows = Table_GetNumRows(_iDatabase,iTable);
- if(iNumRows>0)
- {
- iStaffId = Database_GetIntData(_iDatabase,"DYN_staff.IDstaff",ROW_INDEX,0);
- iStaffTeamId = Join_GetIntFromKey(g_stJoins.m_iStaff_iTeamId,iStaffId);
- if(iStaffTeamId==LOOSER_TEAM)
- {
- // Change staff team
- Join_SetIntFromKey(g_stJoins.m_iStaff_iTeamId,iStaffId,iTeamID);
- //Synchronize for all clients
- Database_SendSynchronization(DATABASE_SERVER);
- return 1;
- }
- }
- }
- return 0;
- }
- func i32x fnReadDB_LayoffStaff(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iNumRows,iTeamID,iStaffId,iTable,iStaffTeamId;
-
- iTeamID = Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
-
- iTable = Table_GetIndexFromName(_iDatabase,"DYN_staff");
- if(iTable>=0)
- {
- iNumRows = Table_GetNumRows(_iDatabase,iTable);
- if(iNumRows>0)
- {
- iStaffId = Database_GetIntData(_iDatabase,"DYN_staff.IDstaff",ROW_INDEX,0);
- iStaffTeamId = Join_GetIntFromKey(g_stJoins.m_iStaff_iTeamId,iStaffId);
- if(iStaffTeamId==iTeamID)
- {
- // Change staff team
- Join_SetIntFromKey(g_stJoins.m_iStaff_iTeamId,iStaffId,LOOSER_TEAM);
- //Synchronize for all clients
- Database_SendSynchronization(DATABASE_SERVER);
- return 1;
- }
- }
- }
- return 0;
- }
- func void fnReadDB_Ready(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iDBUserId,iDBVote;
-
- iDBUserId = Database_GetIntData(_iDatabase,"GAM_user.IDuser",ROW_INDEX,0);
-
- if(_iUserId == iDBUserId)
- {
- iDBVote = Database_GetIntData(_iDatabase,"GAM_user.fkIDuser_state",ROW_INDEX,0);
-
- Join_SetIntFromKey(g_stJoins.m_iUser_iState,iDBUserId,iDBVote);
-
- // Test vote pass
- fnGameVote_Test();
- }
- else
- {
- print("### Invalid ReadyDB ###");
- }
- }
-
- func void fnReadDB_Invite(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iDBTeamId,iDBAnswer;
-
- iDBTeamId = Database_GetIntData(_iDatabase,"DYN_team.IDteam",ROW_INDEX,0);
-
- if(Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId) == iDBTeamId)
- {
- // Read answer
- iDBAnswer = Database_GetIntData(_iDatabase,"DYN_team.game_i_invite_enum",ROW_INDEX,0);
- // Save answer
- Join_SetIntFromKey(g_stJoins.m_iTeam_iInviteEnum,iDBTeamId,iDBAnswer);
- // Make pre race check
- CheckPreRaceData();
- }
- else
- {
- print("### Invalid InviteDB ###");
- }
- }
-
- func void fnReadDB_StratZone(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iRowIndex0,iRowIndex1,i,iDeltaNumZones,iSubsetId,iDBTeamId,iLocalZoneStratIDJoin,iServerZoneStratIDJoin,iServerZoneTableIndex,iNumRows,
- ifkIDstrategic_zone_type,ifkIDstrategy,ifkIDcyclist_ref,ifkIDbehaviour_offense,ifkIDbehaviour_defense,ifkIDsprint,
- igene_f_distance,igene_b_compete,ifkIDstrategic_zone_type2,ifkIDstrategy2,ifkIDcyclist_ref2,ifkIDbehaviour_offense2,
- ifkIDbehaviour_defense2,ifkIDsprint2,igene_f_distance2,igene_b_compete2,iIDstrategic_zone2,
- iServerBehaviourDefenseTableIndex,iIDbehaviour_defense,ifkIDcondition_type,ifkIDcondition_key,ifkIDbehaviour_defense_type,igene_f_condition_value,iIDbehaviour_defense2,
- ifkIDcondition_type2,ifkIDcondition_key2,ifkIDbehaviour_defense_type2,igene_f_condition_value2,iBehaviourID,iBehaviourID2,iBehaviourIndex2;
-
-
- println("fnReadDB_StratZone");
-
- //Database_HTMLDebugPrint(_iDatabase);
- //Database_HTMLDebugPrint(DATABASE_SERVER);
-
- //to verify data on team ID
- //iDBTeamId=Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
- var i32x iStratId;
- iStratId = Database_GetIntData(_iDatabase,"DYN_strategic_zone.fkIDstrategy",ROW_INDEX,0);
- iDBTeamId = Database_GetIntData(DATABASE_SERVER,"DYN_strategy.fkIDteam",ROW_KEY,iStratId);
-
- print("iDBTeamId=");
- println(itoa(iDBTeamId));
-
- // Subset for zone data
- iSubsetId = Subset_Constructor("SUBSET_STRATEGY_ZONE",DATABASE_SERVER);
- Database_AddTables(iSubsetId,3);
- Table_SetName(iSubsetId, 0, "DYN_strategic_zone");
- TableSubset_SelectColumns(iSubsetId,0,"*");
- Table_SetName(iSubsetId, 1, "DYN_strategy");
- TableSubset_SelectColumns(iSubsetId,1,"*");
- Table_SetName(iSubsetId, 2, "DYN_behaviour_defense");
- TableSubset_SelectColumns(iSubsetId,2,"*");
-
-
- // Select zones of the current team
- Query_Create(0,iSubsetId);
- Query_SelectTable( 0, "DYN_strategic_zone");
- Query_SelectTable( 0, "DYN_strategic_zone.fkIDstrategy.DYN_strategy");
- Query_SelectTable( 0, "DYN_strategic_zone.fkIDbehaviour_defense.DYN_behaviour_defense");
- Query_SelectWhereIntEqual(0,"DYN_strategic_zone.fkIDstrategy.DYN_strategy.fkIDteam", iDBTeamId);
- Query_Execute(0);
-
- //Joins creation
- iLocalZoneStratIDJoin=Join_Constructor(_iDatabase,"DYN_strategic_zone.fkIDstrategy");
- iServerZoneStratIDJoin=Join_Constructor(iSubsetId,"DYN_strategic_zone.fkIDstrategy");
- iServerZoneTableIndex = Table_GetIndexFromName(iSubsetId,"DYN_strategic_zone");
-
-
- ifkIDstrategic_zone_type=Join_Constructor(_iDatabase,"DYN_strategic_zone.fkIDstrategic_zone_type");
- ifkIDstrategy=Join_Constructor(_iDatabase,"DYN_strategic_zone.fkIDstrategy");
- ifkIDcyclist_ref=Join_Constructor(_iDatabase,"DYN_strategic_zone.fkIDcyclist_ref");
- ifkIDsprint=Join_Constructor(_iDatabase,"DYN_strategic_zone.fkIDsprint");
- igene_f_distance=Join_Constructor(_iDatabase,"DYN_strategic_zone.gene_f_distance");
- igene_b_compete=Join_Constructor(_iDatabase,"DYN_strategic_zone.gene_b_compete");
- iIDstrategic_zone2=Join_Constructor(iSubsetId,"DYN_strategic_zone.IDstrategic_zone");
- ifkIDstrategic_zone_type2=Join_Constructor(iSubsetId,"DYN_strategic_zone.fkIDstrategic_zone_type");
- ifkIDstrategy2=Join_Constructor(iSubsetId,"DYN_strategic_zone.fkIDstrategy");
- ifkIDcyclist_ref2=Join_Constructor(iSubsetId,"DYN_strategic_zone.fkIDcyclist_ref");
- ifkIDsprint2=Join_Constructor(iSubsetId,"DYN_strategic_zone.fkIDsprint");
- igene_f_distance2=Join_Constructor(iSubsetId,"DYN_strategic_zone.gene_f_distance");
- igene_b_compete2=Join_Constructor(iSubsetId,"DYN_strategic_zone.gene_b_compete");
-
-
- iServerBehaviourDefenseTableIndex = Table_GetIndexFromName(iSubsetId,"DYN_behaviour_defense");
- ifkIDbehaviour_defense=Join_Constructor(_iDatabase,"DYN_strategic_zone.fkIDbehaviour_defense");
- ifkIDbehaviour_offense=Join_Constructor(_iDatabase,"DYN_strategic_zone.fkIDbehaviour_offense");
- ifkIDbehaviour_defense2=Join_Constructor(iSubsetId,"DYN_strategic_zone.fkIDbehaviour_defense");
- ifkIDbehaviour_offense2=Join_Constructor(iSubsetId,"DYN_strategic_zone.fkIDbehaviour_offense");
-
- iIDbehaviour_defense=Join_Constructor(_iDatabase,"DYN_behaviour_defense.IDbehaviour_defense");
- ifkIDcondition_type=Join_Constructor(_iDatabase,"DYN_behaviour_defense.fkIDcondition_type");
- ifkIDcondition_key=Join_Constructor(_iDatabase,"DYN_behaviour_defense.fkIDcondition_key");
- ifkIDbehaviour_defense_type=Join_Constructor(_iDatabase,"DYN_behaviour_defense.fkIDbehaviour_defense_type");
- igene_f_condition_value=Join_Constructor(_iDatabase,"DYN_behaviour_defense.gene_f_condition_value");
-
- iIDbehaviour_defense2=Join_Constructor(iSubsetId,"DYN_behaviour_defense.IDbehaviour_defense");
- ifkIDcondition_type2=Join_Constructor(iSubsetId,"DYN_behaviour_defense.fkIDcondition_type");
- ifkIDcondition_key2=Join_Constructor(iSubsetId,"DYN_behaviour_defense.fkIDcondition_key");
- ifkIDbehaviour_defense_type2=Join_Constructor(iSubsetId,"DYN_behaviour_defense.fkIDbehaviour_defense_type");
- igene_f_condition_value2=Join_Constructor(iSubsetId,"DYN_behaviour_defense.gene_f_condition_value");
-
-
- //Verify data validity
- /*i=0;
- iNumRows=Join_GetNumRows(iLocalZoneStratIDJoin);
- while(i<iNumRows)
- {
- Join_GetIntFromIndex(,i);
- i=i+1;
- }*/
-
-
- //Dynamic data creation
- iDeltaNumZones=Join_GetNumRows(iServerZoneStratIDJoin)-Join_GetNumRows(iLocalZoneStratIDJoin);
-
- print("iDeltaNumZones=");
- println(itoa(iDeltaNumZones));
-
- if(iDeltaNumZones>0)
- {
- //delete zones
- i=0;
- while(i<iDeltaNumZones)
- {
- Table_DeleteRowFromIndex(iSubsetId,iServerBehaviourDefenseTableIndex,i);
- Table_DeleteRowFromIndex(iSubsetId,iServerZoneTableIndex,i);
- i=i+1;
- }
- Database_DeleteNow(DATABASE_SERVER);
- }
- else if(iDeltaNumZones<0)
- {
- i=0;
- while(i<-iDeltaNumZones)
- {
- //create zones
- Table_AddRow(iSubsetId,iServerZoneTableIndex);
- Table_AddRow(iSubsetId,iServerBehaviourDefenseTableIndex);
- i=i+1;
- }
- }
-
-
- iNumRows=Join_GetNumRows(iLocalZoneStratIDJoin);
- //println
-
- //Copy data in database
- i=0;
- while(i<iNumRows)
- {
- Join_SetIntFromIndex(ifkIDstrategy2,i,Join_GetIntFromIndex(ifkIDstrategy,i));
-
- Join_SetIntFromIndex(ifkIDbehaviour_defense2,i,Join_GetIntFromIndex(iIDbehaviour_defense2,i));//Dynamic keys generated on server
- Join_SetIntFromIndex(ifkIDbehaviour_offense2,i,Join_GetIntFromIndex(ifkIDbehaviour_offense,i));//static keys from 1 to 3 read from receidved DB
-
- Join_SetIntFromIndex(ifkIDstrategic_zone_type2,i,Join_GetIntFromIndex(ifkIDstrategic_zone_type,i));
- Join_SetIntFromIndex(ifkIDcyclist_ref2,i,Join_GetIntFromIndex(ifkIDcyclist_ref,i));
- Join_SetIntFromIndex(ifkIDsprint2,i,Join_GetIntFromIndex(ifkIDsprint,i));
- Join_SetFloatFromIndex(igene_f_distance2,i,Join_GetFloatFromIndex(igene_f_distance,i));
- Join_SetIntFromIndex(igene_b_compete2,i,Join_GetIntFromIndex(igene_b_compete,i));
-
- iBehaviourID=Join_GetIntFromKey(iIDbehaviour_defense,Join_GetIntFromIndex(ifkIDbehaviour_defense,i));
- iBehaviourID2=Join_GetIntFromIndex(ifkIDbehaviour_defense2,i);
-
- Join_SetIntFromKey(ifkIDcondition_type2,iBehaviourID2,Join_GetIntFromKey(ifkIDcondition_type,iBehaviourID));
- Join_SetIntFromKey(ifkIDcondition_key2,iBehaviourID2,Join_GetIntFromKey(ifkIDcondition_key,iBehaviourID));
- Join_SetIntFromKey(ifkIDbehaviour_defense_type2,iBehaviourID2,Join_GetIntFromKey(ifkIDbehaviour_defense_type,iBehaviourID));
- Join_SetFloatFromKey(igene_f_condition_value2,iBehaviourID2,Join_GetFloatFromKey(igene_f_condition_value,iBehaviourID));
-
- i=i+1;
- }
-
-
- //Database_HTMLDebugPrint(iSubsetId);
-
- //Synchronize for all clients
- //Database_SendSynchronization(DATABASE_SERVER);
- //Database_HTMLDebugPrint(DATABASE_SERVER);
-
- i=0;
- print("iNumRows=");
- println(itoa(iNumRows));
- //Database_HTMLDebugPrint(iSubsetId);
- while(i<iNumRows)
- {
- print("Zone index:");
- println(itoa(i));
-
- print("Zone ID:");
- println(itoa(Join_GetIntFromIndex(iIDstrategic_zone2,i)));
-
- print("Strategy ID:");
- println(itoa(Join_GetIntFromIndex(ifkIDstrategy2,i)));
-
- print("Type:");
- println(itoa(Join_GetIntFromIndex(ifkIDstrategic_zone_type2,i)));
-
- print("igene_f_distance:");
- println(ftoa(Join_GetFloatFromIndex(igene_f_distance2,i)));
-
- if(Join_GetIntFromIndex(ifkIDstrategic_zone_type2,i)==2)
- {
- print("ifkIDsprint2:");
- println(itoa(Join_GetIntFromIndex(ifkIDsprint2,i)));
-
- print("igene_b_compete2:");
- println(itoa(Join_GetIntFromIndex(igene_b_compete2,i)));
- }
- else
- {
- print("ifkIDcyclist_ref2:");
- println(itoa(Join_GetIntFromIndex(ifkIDcyclist_ref2,i)));
-
- print("ifkIDbehaviour_defense2:");
- println(itoa(Join_GetIntFromIndex(ifkIDbehaviour_defense2,i)));
-
- iBehaviourID2=Join_GetIntFromIndex(ifkIDbehaviour_defense2,i);
-
- print("ifkIDcondition_type2:");
- println(itoa(Join_GetIntFromKey(ifkIDcondition_type2,iBehaviourID2)));
-
- print("ifkIDcondition_key2:");
- println(itoa(Join_GetIntFromKey(ifkIDcondition_key2,iBehaviourID2)));
-
- print("ifkIDbehaviour_defense_type2:");
- println(itoa(Join_GetIntFromKey(ifkIDbehaviour_defense_type2,iBehaviourID2)));
-
- print("igene_f_condition_value2:");
- println(ftoa(Join_GetFloatFromKey(igene_f_condition_value2,iBehaviourID2)));
-
-
- print("ifkIDbehaviour_offense2:");
- println(itoa(Join_GetIntFromIndex(ifkIDbehaviour_offense2,i)));
- }
-
- i=i+1;
- }
-
- //Delete joins and subset
- if(iIDstrategic_zone2) Join_Destructor(iIDstrategic_zone2);
- if(igene_f_condition_value2) Join_Destructor(igene_f_condition_value2);
- if(ifkIDbehaviour_defense_type2) Join_Destructor(ifkIDbehaviour_defense_type2);
- if(ifkIDcondition_key2) Join_Destructor(ifkIDcondition_key2);
- if(ifkIDcondition_type2) Join_Destructor(ifkIDcondition_type2);
- if(iIDbehaviour_defense2) Join_Destructor(iIDbehaviour_defense2);
- if(igene_f_condition_value) Join_Destructor(igene_f_condition_value);
- if(ifkIDbehaviour_defense_type) Join_Destructor(ifkIDbehaviour_defense_type);
- if(ifkIDcondition_key) Join_Destructor(ifkIDcondition_key);
- if(ifkIDcondition_type) Join_Destructor(ifkIDcondition_type);
- if(iIDbehaviour_defense) Join_Destructor(iIDbehaviour_defense);
-
- if(igene_b_compete2) Join_Destructor(igene_b_compete2);
- if(igene_f_distance2) Join_Destructor(igene_f_distance2);
- if(ifkIDsprint2) Join_Destructor(ifkIDsprint2);
- if(ifkIDbehaviour_defense2) Join_Destructor(ifkIDbehaviour_defense2);
- if(ifkIDbehaviour_offense2) Join_Destructor(ifkIDbehaviour_offense2);
- if(ifkIDcyclist_ref2) Join_Destructor(ifkIDcyclist_ref2);
- if(ifkIDstrategy2) Join_Destructor(ifkIDstrategy2);
- if(ifkIDstrategic_zone_type2) Join_Destructor(ifkIDstrategic_zone_type2);
-
- if(igene_b_compete) Join_Destructor(igene_b_compete);
- if(igene_f_distance) Join_Destructor(igene_f_distance);
- if(ifkIDsprint) Join_Destructor(ifkIDsprint);
- if(ifkIDbehaviour_defense) Join_Destructor(ifkIDbehaviour_defense);
- if(ifkIDbehaviour_offense) Join_Destructor(ifkIDbehaviour_offense);
- if(ifkIDcyclist_ref) Join_Destructor(ifkIDcyclist_ref);
- if(ifkIDstrategy) Join_Destructor(ifkIDstrategy);
- if(ifkIDstrategic_zone_type) Join_Destructor(ifkIDstrategic_zone_type);
-
- if(iServerZoneStratIDJoin) Join_Destructor(iServerZoneStratIDJoin);
- if(iLocalZoneStratIDJoin) Join_Destructor(iLocalZoneStratIDJoin);
- if(iSubsetId) Subset_Destructor(iSubsetId);
- }
-
- func void fnReadDB_CyclistStrat(i32x _iUserId,i32x _iDatabase)
- {
- var i32x i,iNumRows,iDBTeamId,iLocalCyclistIDJoin,iLocalCyclistStratIDJoin,iServerCyclistStratIDJoin;
-
- println("fnReadDB_CyclistStrat");
-
- //to verify data on team ID
- //iDBTeamId=Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
- iDBTeamId = Database_GetIntData(_iDatabase,"DYN_cyclist.fkIDteam",ROW_INDEX,0);
-
- print("iDBTeamId=");
- println(itoa(iDBTeamId));
-
- //Joins creation
- iLocalCyclistIDJoin=Join_Constructor(_iDatabase,"DYN_cyclist.IDcyclist");
- iLocalCyclistStratIDJoin=Join_Constructor(_iDatabase,"DYN_cyclist.fkIDstrategic_group");
- iServerCyclistStratIDJoin=Join_Constructor(DATABASE_SERVER,"DYN_cyclist.fkIDstrategic_group");
-
- //Database_HTMLDebugPrint(_iDatabase);
-
- //Copy data in database
- i=0;
- iNumRows=Join_GetNumRows(iLocalCyclistStratIDJoin);
- println("iNumRows="+itoa(iNumRows));
- while(i<iNumRows)
- {
- println("Cyclist "+itoa(i)+"Strat Id="+itoa(Join_GetIntFromIndex(iLocalCyclistStratIDJoin,i)));
- Join_SetIntFromKey(iServerCyclistStratIDJoin,Join_GetIntFromIndex(iLocalCyclistIDJoin,i),Join_GetIntFromIndex(iLocalCyclistStratIDJoin,i));
- i=i+1;
- }
- //Synchronize for all clients
- Database_SendSynchronization(DATABASE_SERVER);
- //Database_HTMLDebugPrint(DATABASE_SERVER);
-
- //delete joins
- if(iServerCyclistStratIDJoin) Join_Destructor(iServerCyclistStratIDJoin);
- if(iLocalCyclistStratIDJoin) Join_Destructor(iLocalCyclistStratIDJoin);
- if(iLocalCyclistIDJoin) Join_Destructor(iLocalCyclistIDJoin);
-
- SaveDatabase();
- }
-
- func void fnReadDB_EquipmentSelection(i32x _iUserId,i32x _iDatabase)
- {
- var i32x i,iDBTeamId,iNumRows,iEquipmentID,iEquipmentSelectionJoin,iFrameJoin,iHelmetJoin,iFrontWheelJoin,iRearWheelJoin,
- iServerFrameJoin,iServerHelmetJoin,iServerFrontWheelJoin,iServerRearWheelJoin;
-
- println("fnReadDB_EquipmentSelection");
-
- //to verify data on team ID
- iDBTeamId=Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
-
- print("iDBTeamId=");
- println(itoa(iDBTeamId));
-
- //Joins creation
- iEquipmentSelectionJoin=Join_Constructor(_iDatabase,"DYN_equipment_selection.IDequipment_selection");
- iFrameJoin=Join_Constructor(_iDatabase,"DYN_equipment_selection.fkIDequipment_frame");
- iHelmetJoin=Join_Constructor(_iDatabase,"DYN_equipment_selection.fkIDequipment_helmet");
- iFrontWheelJoin=Join_Constructor(_iDatabase,"DYN_equipment_selection.fkIDequipment_front_wheel");
- iRearWheelJoin=Join_Constructor(_iDatabase,"DYN_equipment_selection.fkIDequipment_rear_wheel");
-
- iServerFrameJoin=Join_Constructor(DATABASE_SERVER,"DYN_equipment_selection.fkIDequipment_frame");
- iServerHelmetJoin=Join_Constructor(DATABASE_SERVER,"DYN_equipment_selection.fkIDequipment_helmet");
- iServerFrontWheelJoin=Join_Constructor(DATABASE_SERVER,"DYN_equipment_selection.fkIDequipment_front_wheel");
- iServerRearWheelJoin=Join_Constructor(DATABASE_SERVER,"DYN_equipment_selection.fkIDequipment_rear_wheel");
-
-
- //Copy data in database
- i=0;
- iNumRows=Join_GetNumRows(iEquipmentSelectionJoin);
- while(i<iNumRows)
- {
- iEquipmentID=Join_GetIntFromIndex(iEquipmentSelectionJoin,i);
- Join_SetIntFromKey(iServerFrameJoin,iEquipmentID,Join_GetIntFromKey(iFrameJoin,iEquipmentID));
- Join_SetIntFromKey(iServerHelmetJoin,iEquipmentID,Join_GetIntFromKey(iHelmetJoin,iEquipmentID));
- Join_SetIntFromKey(iServerFrontWheelJoin,iEquipmentID,Join_GetIntFromKey(iFrontWheelJoin,iEquipmentID));
- Join_SetIntFromKey(iServerRearWheelJoin,iEquipmentID,Join_GetIntFromKey(iRearWheelJoin,iEquipmentID));
- i=i+1;
- }
-
- //Synchronize for all clients
- Database_SendSynchronization(DATABASE_SERVER);
- //Database_HTMLDebugPrint(DATABASE_SERVER);
-
- //delete joins
- if(iEquipmentSelectionJoin) Join_Destructor(iEquipmentSelectionJoin);
- if(iFrameJoin) Join_Destructor(iFrameJoin);
- if(iHelmetJoin) Join_Destructor(iHelmetJoin);
- if(iFrontWheelJoin) Join_Destructor(iFrontWheelJoin);
- if(iRearWheelJoin) Join_Destructor(iRearWheelJoin);
- if(iServerFrameJoin) Join_Destructor(iServerFrameJoin);
- if(iServerHelmetJoin) Join_Destructor(iServerHelmetJoin);
- if(iServerFrontWheelJoin) Join_Destructor(iServerFrontWheelJoin);
- if(iServerRearWheelJoin) Join_Destructor(iServerRearWheelJoin);
- }
-
-
-
-
-
-
- // ========== training week function ===================
-
- func szx GetDayColumnEnd(i32x _iColumnIndex);
-
- func void RemoveTrainingDayProgram(i32x _iSubset,i32x _iIDDayProgram)
- {
- var i32x iTableIndex;
-
- // removes the row
- iTableIndex=Table_GetIndexFromName(_iSubset,"DYN_training_day_program");
- Table_DeleteRowFromKey(_iSubset,iTableIndex,_iIDDayProgram);
- // updates the database
- Database_DeleteNow(_iSubset);
- }
-
- func void RemoveTrainingDay(i32x _iSubset,i32x _iIDDay)
- {
- var i32x iQuerySubset;
- var i32x i,iNumRows,iIDDayProgram;
- var i32x iTableIndex;
-
- // creates a subset for a query
- iQuerySubset=Subset_Constructor("",_iSubset);
- Database_AddTables(iQuerySubset,1);
- Table_SetName(iQuerySubset,0,"DYN_training_day_program");
- TableSubset_SelectColumns(iQuerySubset,0,"*");
-
- // looks for all the "training_day_program" records of the day
- Query_Create(0,iQuerySubset);
- Query_SelectTable(0,"DYN_training_day_program");
- Query_SelectWhereIntEqual(0,"DYN_training_day_program.fkIDtraining_day",_iIDDay);
- Query_Execute(0);
-
- // for each found row
- iNumRows=Table_GetNumRows(iQuerySubset,0);
- i=0;
- while (i<iNumRows)
- {
- // removes the training day program
- iIDDayProgram=Database_GetIntData(iQuerySubset,"DYN_training_day_program.IDtraining_day_program",ROW_INDEX,i);
- RemoveTrainingDayProgram(_iSubset,iIDDayProgram);
- i=i+1;
- }
-
- // removes the training day
- iTableIndex=Table_GetIndexFromName(_iSubset,"DYN_training_day");
- Table_DeleteRowFromKey(_iSubset,iTableIndex,_iIDDay);
- Database_DeleteNow(_iSubset);
-
- Subset_Destructor(iQuerySubset);
- }
-
- func void RemoveTrainingWeekData(i32x _iSubset,i32x _iIDWeek)
- {
- var i32x i;
- var i32x iIDDay;
-
- // for each day of the week
- i=0;
- while (i<7)
- {
- // removes the day
- iIDDay=Database_GetIntData(_iSubset,"DYN_training_week.fkIDtraining_day_"+GetDayColumnEnd(i),ROW_KEY,_iIDWeek);
- RemoveTrainingDay(_iSubset,iIDDay);
-
- i=i+1;
- }
- }
-
- func void RemoveTrainingWeek(i32x _iSubset,i32x _iIDWeek)
- {
- var i32x iTableIndex;
-
- // removes all the days of the week
- RemoveTrainingWeekData(_iSubset,_iIDWeek);
-
- // removes the week
- iTableIndex=Table_GetIndexFromName(_iSubset,"DYN_training_week");
- Table_DeleteRowFromKey(_iSubset,iTableIndex,_iIDWeek);
- Database_DeleteNow(DATABASE_SERVER);
- }
-
-
- func void CopyTrainingDayProgram(i32x _iSourceSubset,i32x _iSourceKey,i32x _iDestinationSubset,i32x _iDestinationKey)
- {
- var i32x iQuerySubset;
- var i32x iTableIndex;
- var i32x iDayProgramRow;
- var i32x iIDDayProgram;
- var i32x iIDProgram;
- var i32x iNumRows,i;
-
- // creates a subset for a query
- iQuerySubset=Subset_Constructor("SUBSET_TRAINING_DAY_PROGRAM",_iSourceSubset);
- Database_AddTables(iQuerySubset,1);
- Table_SetName(iQuerySubset,0,"DYN_training_day_program");
- TableSubset_SelectColumns(iQuerySubset,0,"*");
-
- // looks for all the "training_day_program" in the source subset linked to the source key of the day
- Query_Create(0,iQuerySubset);
- Query_SelectTable(0,"DYN_training_day_program");
- Query_SelectWhereIntEqual(0,"DYN_training_day_program.fkIDtraining_day",_iSourceKey);
- Query_Execute(0);
-
- iNumRows=Table_GetNumRows(iQuerySubset,0);
- i=0;
- while (i<iNumRows)
- {
- // create a new "training_day_program" row
- iTableIndex=Table_GetIndexFromName(_iDestinationSubset,"DYN_training_day_program");
- iDayProgramRow=Table_AddRow(_iDestinationSubset,iTableIndex);
- iIDDayProgram=Database_GetIntData(_iDestinationSubset,"DYN_training_day_program.IDtraining_day_program",ROW_INDEX,iDayProgramRow);
-
- iIDProgram=Database_GetIntData(iQuerySubset,"DYN_training_day_program.fkIDprogram",ROW_INDEX,i);
-
- // updates the data of the row
- Database_SetIntData(_iDestinationSubset,"DYN_training_day_program.fkIDtraining_day",ROW_KEY,iIDDayProgram,_iDestinationKey);
- Database_SetIntData(_iDestinationSubset,"DYN_training_day_program.fkIDprogram",ROW_KEY,iIDDayProgram,iIDProgram);
-
- i=i+1;
- }
-
- Subset_Destructor(iQuerySubset);
- }
-
- func i32x CopyTrainingDay(i32x _iSourceSubset,i32x _iSourceKey,i32x _iDestinationSubset)
- {
- var i32x iTableIndex;
- var i32x iDayRow;
- var i32x iIDDay;
- var i32x bDietFirst;
-
- // create a new row
- iTableIndex=Table_GetIndexFromName(_iDestinationSubset,"DYN_training_day");
- iDayRow=Table_AddRow(_iDestinationSubset,iTableIndex);
- iIDDay=Database_GetIntData(_iDestinationSubset,"DYN_training_day.IDtraining_day",ROW_INDEX,iDayRow);
-
- // copy all the training programs
- CopyTrainingDayProgram(_iSourceSubset,_iSourceKey,_iDestinationSubset,iIDDay);
-
- // gets the data of the source...
- bDietFirst=Database_GetIntData(_iSourceSubset,"DYN_training_day.gene_b_1st_program_diet",ROW_KEY,_iSourceKey);
-
- // ... and puts it in the destination
- Database_SetIntData(_iDestinationSubset,"DYN_training_day.gene_b_1st_program_diet",ROW_KEY,iIDDay,bDietFirst);
-
- // returns the ID of the new row
- return(iIDDay);
- }
-
- func void CopyTrainingWeek(i32x _iSourceSubset,i32x _iSourceKey,i32x _iDestinationSubset,i32x _iDestinationKey)
- {
- var i32x i;
- var i32x iIDDay;
- var i32x iIDNewDay;
-
- // for each day of the week
- i=0;
- while (i<7)
- {
- iIDDay=Database_GetIntData(_iSourceSubset,"DYN_training_week.fkIDtraining_day_"+GetDayColumnEnd(i),ROW_KEY,_iSourceKey);
- // copy the day from the source to the destination
- iIDNewDay=CopyTrainingDay(_iSourceSubset,iIDDay,_iDestinationSubset);
- // the new day is linked tothe week
- Database_SetIntData(_iDestinationSubset,"DYN_training_week.fkIDtraining_day_"+GetDayColumnEnd(i),ROW_KEY,_iDestinationKey,iIDNewDay);
-
- i=i+1;
- }
-
- var i32x iIDColor;
- var i32x iIDTeam;
- var szx szWeekName;
-
- // gets the source values
- iIDColor=Database_GetIntData(_iSourceSubset,"DYN_training_week.fkIDcolor",ROW_KEY,_iSourceKey);
- iIDTeam=Database_GetIntData(_iSourceSubset,"DYN_training_week.fkIDteam",ROW_KEY,_iSourceKey);
- szWeekName=Database_GetStringData(_iSourceSubset,"DYN_training_week.gene_sz_name",ROW_KEY,_iSourceKey);
-
- // puts them in the destination
- Database_SetIntData(_iDestinationSubset,"DYN_training_week.fkIDcolor",ROW_KEY,_iDestinationKey,iIDColor);
- Database_SetIntData(_iDestinationSubset,"DYN_training_week.fkIDteam",ROW_KEY,_iDestinationKey,iIDTeam);
- Database_SetStringData(_iDestinationSubset,"DYN_training_week.gene_sz_name",ROW_KEY,_iDestinationKey,szWeekName);
- Database_SetStringData(_iDestinationSubset,"DYN_training_week.gene_sz_displayed_name",ROW_KEY,_iDestinationKey,szWeekName);
- }
-
- func void CreateTrainingWeek(i32x _iSourceSubset,i32x _iSourceKey,i32x _iDestinationSubset)
- {
- var i32x iTableIndex;
- var i32x iIDWeek,iWeekRow;
-
- // creates a new row
- iTableIndex=Table_GetIndexFromName(_iDestinationSubset,"DYN_training_week");
- iWeekRow=Table_AddRow(_iDestinationSubset,iTableIndex);
- iIDWeek=Database_GetIntData(_iDestinationSubset,"DYN_training_week.IDtraining_week",ROW_INDEX,iWeekRow);
-
- // copy the source week in the new one
- CopyTrainingWeek(_iSourceSubset,_iSourceKey,_iDestinationSubset,iIDWeek);
- }
-
- func void UpdateTrainingWeek(i32x _iSourceSubset,i32x _iSourceKey,i32x _iDestinationSubset,i32x _iDestinationKey)
- {
- // removes the old data of the week
- RemoveTrainingWeekData(_iDestinationSubset,_iDestinationKey);
- // copy the source week in the empty one
- CopyTrainingWeek(_iSourceSubset,_iSourceKey,_iDestinationSubset,_iDestinationKey);
- }
-
- // ========== the end ===================
-
-
- func void fnReadDB_TrainingWeek(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iQueryServerSubset;
- var i32x iQueryReceivedSubset;
- var i32x iDBTeamId;
- var i32x i,iNumRows;
- var i32x iServerIDWeek,iReceivedIDWeek;
- var i32x iWeekNameJoin;
- var szx szReceivedWeekName,szServerWeekName;
-
- iDBTeamId=Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
-
- iQueryServerSubset=Subset_Constructor("WEEK_SYNCHRONISATION_SERVER_QUERY",DATABASE_SERVER);
- Database_AddTables(iQueryServerSubset,1);
- Table_SetName(iQueryServerSubset,0,"DYN_training_week");
- TableSubset_SelectColumns(iQueryServerSubset,0,"*");
-
- Query_Create(0,iQueryServerSubset);
- Query_SelectTable(0,"DYN_training_week");
- Query_SelectWhereIntEqual(0,"DYN_training_week.fkIDteam",iDBTeamId);
- Query_Execute(0);
-
- iQueryReceivedSubset=Subset_Constructor("WEEK_SYNCHRONISATION_RECEIVED_QUERY",_iDatabase);
- Database_AddTables(iQueryReceivedSubset,1);
- Table_SetName(iQueryReceivedSubset,0,"DYN_training_week");
- TableSubset_SelectColumns(iQueryReceivedSubset,0,"*");
-
- Query_Create(0,iQueryReceivedSubset);
- Query_SelectTable(0,"DYN_training_week");
- Query_SelectWhereIntEqual(0,"DYN_training_week.fkIDteam",iDBTeamId);
- Query_Execute(0);
-
- // week synchronisation : delete
- iWeekNameJoin=Join_Constructor(iQueryReceivedSubset,"DYN_training_week.gene_sz_name");
-
- iNumRows=Table_GetNumRows(iQueryServerSubset,0);
- i=0;
- while (i<iNumRows)
- {
- szServerWeekName=Database_GetStringData(iQueryServerSubset,"DYN_training_week.gene_sz_name",ROW_INDEX,i);
- iReceivedIDWeek=Join_FindKeyFromStringData(iWeekNameJoin,szServerWeekName);
-
- if (iReceivedIDWeek==-1)
- {
- iServerIDWeek=Database_GetIntData(iQueryServerSubset,"DYN_training_week.IDtraining_week",ROW_INDEX,i);
- RemoveTrainingWeek(DATABASE_SERVER,iServerIDWeek);
- i=i-1;
- iNumRows=iNumRows-1;
- }
-
- i=i+1;
- }
-
- Join_Destructor(iWeekNameJoin);
- // week synchronized : delete
-
- // ****************************************************************
- // version un peu glauque: on reexecute les query sinon ca plante
- // quand on efface et rajoute une semaine a la fois!!!!
- // ****************************************************************
-
- Subset_Destructor(iQueryServerSubset);
- Subset_Destructor(iQueryReceivedSubset);
-
- iQueryServerSubset=Subset_Constructor("WEEK_SYNCHRONISATION_SERVER_QUERY",DATABASE_SERVER);
- Database_AddTables(iQueryServerSubset,1);
- Table_SetName(iQueryServerSubset,0,"DYN_training_week");
- TableSubset_SelectColumns(iQueryServerSubset,0,"*");
-
- Query_Create(0,iQueryServerSubset);
- Query_SelectTable(0,"DYN_training_week");
- Query_SelectWhereIntEqual(0,"DYN_training_week.fkIDteam",iDBTeamId);
- Query_Execute(0);
-
- iQueryReceivedSubset=Subset_Constructor("WEEK_SYNCHRONISATION_RECEIVED_QUERY",_iDatabase);
- Database_AddTables(iQueryReceivedSubset,1);
- Table_SetName(iQueryReceivedSubset,0,"DYN_training_week");
- TableSubset_SelectColumns(iQueryReceivedSubset,0,"*");
-
- Query_Create(0,iQueryReceivedSubset);
- Query_SelectTable(0,"DYN_training_week");
- Query_SelectWhereIntEqual(0,"DYN_training_week.fkIDteam",iDBTeamId);
- Query_Execute(0);
-
- // ****************************************************************
- // fin de la partie glauque...
- // ****************************************************************
-
- // week synchronisation : insert and update
- iWeekNameJoin=Join_Constructor(iQueryServerSubset,"DYN_training_week.gene_sz_name");
-
- iNumRows=Table_GetNumRows(iQueryReceivedSubset,0);
- i=0;
- while (i<iNumRows)
- {
- szReceivedWeekName=Database_GetStringData(iQueryReceivedSubset,"DYN_training_week.gene_sz_name",ROW_INDEX,i);
- iServerIDWeek=Join_FindKeyFromStringData(iWeekNameJoin,szReceivedWeekName);
- iReceivedIDWeek=Database_GetIntData(iQueryReceivedSubset,"DYN_training_week.IDtraining_week",ROW_INDEX,i);
-
- if (iServerIDWeek!=-1)
- {
- UpdateTrainingWeek(_iDatabase,iReceivedIDWeek,DATABASE_SERVER,iServerIDWeek);
- }
- else
- {
- CreateTrainingWeek(_iDatabase,iReceivedIDWeek,DATABASE_SERVER);
- }
-
- i=i+1;
- }
-
- Join_Destructor(iWeekNameJoin);
- // week synchronized : insert and update
-
- Subset_Destructor(iQueryServerSubset);
- Subset_Destructor(iQueryReceivedSubset);
-
- Database_SendSynchronization(DATABASE_SERVER);
-
- // Database_HTMLDebugPrint(DATABASE_SERVER);
- }
-
-
- /*
- // ========== training season function ===================
-
- func i32x FindTrainingSeason(i32x _iQuerySubset,i32x _iIDCyclist)
- {
- var i32x iIDTrainingSeason;
-
- iIDTrainingSeason=0;
-
- DatabaseSubset_Clear(_iQuerySubset);
-
- Query_Create(0,_iQuerySubset);
- Query_SelectTable(0,"DYN_training_season");
- Query_SelectWhereIntEqual(0,"DYN_training_season.fkIDcyclist",_iIDCyclist);
- Query_Execute(0);
-
- if (Table_GetNumRows(_iQuerySubset,0)==1)
- {
- iIDTrainingSeason=Database_GetIntData(_iQuerySubset,"DYN_training_season.IDtraining_season",ROW_INDEX,0);
- }
- else
- {
- print("WARNING DE LA MORT QUI TUE!!!!!!!!! ("+itoa(Table_GetNumRows(_iQuerySubset,0))+")\n");
- }
-
- return(iIDTrainingSeason);
- }
-
- func i32x FindWeekNumber()
- {
- var i32x iJoinId;
- var i32x iNumWeeks;
-
- iJoinId=Join_Constructor(DATABASE_SERVER,"DYN_day.gene_i_year_week");
- Join_Sort(iJoinId,1);
- iNumWeeks=Join_GetIntFromSortedIndex(iJoinId,Join_GetNumRows(iJoinId)-1);
- Join_Destructor(iJoinId);
-
- return(iNumWeeks);
- }
-
- func void RemoveAllTrainingWeeks(i32x _iDataBase,i32x _iIDServerSeason)
- {
- var i32x i,iNumWeeks;
- var i32x iQuerySubset;
-
- iQuerySubset=Subset_Constructor("TRAINING_WEEKS_REMOVE_QUERY",_iDataBase);
- Database_AddTables(iQuerySubset,1);
- Table_SetName(iQuerySubset,0,"DYN_training_season_week");
- TableSubset_SelectColumns(iQuerySubset,0,"*");
-
- iNumWeeks=FindWeekNumber();
- i=1;
- while (i<=iNumWeeks)
- {
- DatabaseSubset_Clear(iQuerySubset);
-
- Query_Create(0,iQuerySubset);
- Query_SelectTable(0,"DYN_training_season_week");
- Query_SelectWhereIntEqual(0,"DYN_training_season_week.gene_i_week",i);
- Query_SelectWhereIntEqual(0,"DYN_training_season_week.fkIDtraining_season",_iIDServerSeason);
- Query_Execute(0);
-
- if (Table_GetNumRows(iQuerySubset,0)==1)
- {
- Table_DeleteRowFromIndex(iQuerySubset,0,0);
- }
-
-
- i=i+1;
- }
-
- Subset_Destructor(iQuerySubset);
-
- }
-
- func void CopyAllTrainingWeeks(i32x _iSourceSubset,i32x _iIDReceivedSeason,i32x _iDestinationSubset,i32x _iIDServerSeason)
- {
- var i32x i,iNumWeeks;
- var i32x iQuerySubset;
- var i32x iTrainingWeekRow;
- var i32x iTrainingSeasonWeekIndex;
- var i32x iIDTrainingWeek;
-
- iQuerySubset=Subset_Constructor("TRAINING_WEEKS_REMOVE_QUERY",_iSourceSubset);
- Database_AddTables(iQuerySubset,1);
- Table_SetName(iQuerySubset,0,"DYN_training_season_week");
- TableSubset_SelectColumns(iQuerySubset,0,"*");
-
- iTrainingSeasonWeekIndex=Table_GetIndexFromName(_iDestinationSubset,"DYN_training_season_week");
-
- iNumWeeks=FindWeekNumber();
- i=1;
- while (i<=iNumWeeks)
- {
- DatabaseSubset_Clear(iQuerySubset);
-
- Query_Create(0,iQuerySubset);
- Query_SelectTable(0,"DYN_training_season_week");
- Query_SelectWhereIntEqual(0,"DYN_training_season_week.gene_i_week",i);
- Query_SelectWhereIntEqual(0,"DYN_training_season_week.fkIDtraining_season",_iIDReceivedSeason);
- Query_Execute(0);
-
- if (Table_GetNumRows(iQuerySubset,0)==1)
- {
- iTrainingWeekRow=Table_AddRow(_iDestinationSubset,iTrainingSeasonWeekIndex);
-
- iIDTrainingWeek=Database_GetIntData(iQuerySubset,"DYN_training_season_week.fkIDtraining_week",ROW_INDEX,0);
-
- Database_SetIntData(_iDestinationSubset,"DYN_training_season_week.gene_i_week",ROW_INDEX,iTrainingWeekRow,i);
- Database_SetIntData(_iDestinationSubset,"DYN_training_season_week.fkIDtraining_week",ROW_INDEX,iTrainingWeekRow,iIDTrainingWeek);
- Database_SetIntData(_iDestinationSubset,"DYN_training_season_week.fkIDtraining_season",ROW_INDEX,iTrainingWeekRow,_iIDServerSeason);
-
- }
-
- i=i+1;
- }
-
- Subset_Destructor(iQuerySubset);
- }
-
- func i32x CreateTrainingSeason(i32x _iDatabase,i32x _iIDCyclist)
- {
- var i32x iIDTrainingSeason;
- var i32x iTrainingSeasonRow;
- var i32x iTableIndex;
-
- iTableIndex=Table_GetIndexFromName(_iDatabase,"DYN_training_season");
-
- iTrainingSeasonRow=Table_AddRow(_iDatabase,iTableIndex);
- iIDTrainingSeason=Database_GetIntData(_iDatabase,"DYN_training_season.IDtraining_season",ROW_INDEX,iTrainingSeasonRow);
-
- Database_SetIntData(_iDatabase,"DYN_training_season.fkIDcyclist",ROW_INDEX,iTrainingSeasonRow,_iIDCyclist);
-
- return(iIDTrainingSeason);
- }
- // ========== the end ===================
-
-
- func void fnReadDB_TrainingSeason(i32x _iUserId,i32x _iDatabase)
- {
- var i32x i,iNumCyclists;
- var i32x iIDCyclist;
- var i32x iIDServerSeason;
- var i32x iIDReceivedSeason;
-
- var i32x iIDTeam;
-
- var i32x iServerQuerySubset;
- var i32x iReceivedQuerySubset;
- var i32x iCyclistSubset;
-
- print("here we go!!!!!!!!!!\n");
-
- iIDTeam=Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
-
- iCyclistSubset=Subset_Constructor("TEAM_CYCLISTS_SUBSET",DATABASE_SERVER);
- Database_AddTables(iCyclistSubset,1);
- Table_SetName(iCyclistSubset,0,"DYN_cyclist");
- TableSubset_SelectColumns(iCyclistSubset,0,"*");
- Query_Create(0,iCyclistSubset);
- Query_SelectTable(0,"DYN_cyclist");
- Query_SelectWhereIntEqual(0,"DYN_cyclist.fkIDteam",iIDTeam);
- Query_Execute(0);
-
- iServerQuerySubset=Subset_Constructor("TRAINING_SEASON_SERVER_QUERY_SUBSET",DATABASE_SERVER);
- Database_AddTables(iServerQuerySubset,1);
- Table_SetName(iServerQuerySubset,0,"DYN_training_season");
- TableSubset_SelectColumns(iServerQuerySubset,0,"*");
-
- iReceivedQuerySubset=Subset_Constructor("TRAINING_SEASON_RECEIVED_QUERY_SUBSET",_iDatabase);
- Database_AddTables(iReceivedQuerySubset,1);
- Table_SetName(iReceivedQuerySubset,0,"DYN_training_season");
- TableSubset_SelectColumns(iReceivedQuerySubset,0,"*");
-
- iNumCyclists=Table_GetNumRows(iCyclistSubset,0);
- i=0;
- while (i<iNumCyclists)
- {
- print("\t"+itoa(i+1)+"/"+itoa(iNumCyclists)+"\n");
-
- iIDCyclist=Database_GetIntData(iCyclistSubset,"DYN_cyclist.IDcyclist",ROW_INDEX,i);
- print("\ttraining season of "+itoa(iIDCyclist)+"\n");
-
- iIDServerSeason=FindTrainingSeason(iServerQuerySubset,iIDCyclist);
- if (iIDServerSeason==0)
- iIDServerSeason=CreateTrainingSeason(DATABASE_SERVER,iIDCyclist);
- print("\t server ="+itoa(iIDServerSeason)+"\n");
- iIDReceivedSeason=FindTrainingSeason(iReceivedQuerySubset,iIDCyclist);
- print("\t received ="+itoa(iIDReceivedSeason)+"\n");
-
- RemoveAllTrainingWeeks(DATABASE_SERVER,iIDServerSeason);
- Database_DeleteNow(DATABASE_SERVER);
-
- CopyAllTrainingWeeks(_iDatabase,iIDReceivedSeason,DATABASE_SERVER,iIDServerSeason);
-
- i=i+1;
- }
-
- Subset_Destructor(iServerQuerySubset);
- Subset_Destructor(iReceivedQuerySubset);
-
- //Database_HTMLDebugPrint(DATABASE_SERVER);
- }
- */
-
-
- /*
- * fnReadDB_TrainingSeason :
- * updates the training season of the user team on the server.
- * (each cyclist MUST already have a complete training season
- * during the year -> no holes in the table)
- */
- func void fnReadDB_TrainingSeason(i32x _iUserId,i32x _iDatabase)
- {
- var i32x iNumCyclists,i;
- var i32x iServerQuerySubset,iClientQuerySubset;
- var i32x iServerCyclistIDJoin,iClientCyclistIDJoin;
- var i32x iServerWeekIndexJoin,iClientWeekIndexJoin;
- var i32x iServerWeekIDJoin,iClientWeekIDJoin;
- var i32x iIDCyclist;
- var i32x iWeekIndex;
- var i32x iIDTeam;
- var i32x iWeekID;
-
- iIDTeam=Join_GetIntFromKey(g_stJoins.m_iUser_iTeamId,_iUserId);
-
- iServerQuerySubset=Subset_Constructor("TRAINING_SEASON_SERVER_QUERY_SUBSET",DATABASE_SERVER);
- Database_AddTables(iServerQuerySubset,3);
- Table_SetName(iServerQuerySubset,0,"DYN_training_season_week");
- TableSubset_SelectColumns(iServerQuerySubset,0,"*");
- Table_SetName(iServerQuerySubset,1,"DYN_training_season");
- TableSubset_SelectColumns(iServerQuerySubset,1,"*");
- Table_SetName(iServerQuerySubset,2,"DYN_cyclist");
- TableSubset_SelectColumns(iServerQuerySubset,2,"*");
-
- Query_Create(0,iServerQuerySubset);
- Query_SelectTable(0,"DYN_cyclist");
- Query_SelectWhereIntEqual(0,"DYN_cyclist.fkIDteam",iIDTeam);
- Query_Execute(0);
- Query_Create(1,iServerQuerySubset);
- Query_SelectTable(1,"DYN_training_season");
- Query_SelectWhereIntEqual(1,"DYN_training_season.fkIDcyclist.DYN_cyclist.fkIDteam",iIDTeam);
- Query_Execute(1);
- Query_Create(2,iServerQuerySubset);
- Query_SelectTable(2,"DYN_training_season_week");
- Query_SelectWhereIntEqual(2,"DYN_training_season_week.fkIDtraining_season.DYN_training_season.fkIDcyclist.DYN_cyclist.fkIDteam",iIDTeam);
- Query_Execute(2);
-
- Database_Update(iServerQuerySubset);
-
- iClientQuerySubset=Subset_Constructor("TRAINING_SEASON_RECEIVED_QUERY_SUBSET",_iDatabase);
- Database_AddTables(iClientQuerySubset,2);
- Table_SetName(iClientQuerySubset,0,"DYN_training_season_week");
- TableSubset_SelectColumns(iClientQuerySubset,0,"*");
- Table_SetName(iClientQuerySubset,1,"DYN_training_season");
- TableSubset_SelectColumns(iClientQuerySubset,1,"*");
-
- TableSubset_SelectAllRows(iClientQuerySubset,0);
- TableSubset_SelectAllRows(iClientQuerySubset,1);
-
- Database_Update(iClientQuerySubset);
-
- iServerWeekIndexJoin=Join_Constructor(iServerQuerySubset,"DYN_training_season_week.gene_i_week");
- Join_Sort(iServerWeekIndexJoin,1);
- iServerCyclistIDJoin=Join_Constructor(iServerQuerySubset,"DYN_training_season_week.fkIDtraining_season.DYN_training_season.fkIDcyclist");
- Join_Sort(iServerCyclistIDJoin,1);
- iServerWeekIDJoin=Join_Constructor(iServerQuerySubset,"DYN_training_season_week.fkIDtraining_week");
-
- iClientWeekIndexJoin=Join_Constructor(iClientQuerySubset,"DYN_training_season_week.gene_i_week");
- Join_Sort(iClientWeekIndexJoin,1);
- iClientCyclistIDJoin=Join_Constructor(iClientQuerySubset,"DYN_training_season_week.fkIDtraining_season.DYN_training_season.fkIDcyclist");
- Join_Sort(iClientCyclistIDJoin,1);
- iClientWeekIDJoin=Join_Constructor(iClientQuerySubset,"DYN_training_season_week.fkIDtraining_week");
-
- iNumCyclists=Table_GetNumRows(iServerQuerySubset,0);
- i=0;
- //print("num cyclists = "+itoa(iNumCyclists)+"\n");
- while (i<iNumCyclists)
- {
- iIDCyclist=Join_GetIntFromIndex(iServerCyclistIDJoin,i);
- if (iIDCyclist!=Join_GetIntFromIndex(iClientCyclistIDJoin,i))
- print("fuck 1 !!\n");
- //print("\tserver:\n\t\tcyclist = "+itoa(Join_GetIntFromIndex(iServerCyclistIDJoin,i))+"\n");
- //print("\t\tweek = "+itoa(Join_GetIntFromIndex(iServerWeekIndexJoin,i))+"\n");
-
- iWeekIndex=Join_GetIntFromIndex(iServerWeekIndexJoin,i);
- if (iWeekIndex!=Join_GetIntFromIndex(iClientWeekIndexJoin,i))
- print("fuck 2 !!\n");
- //print("\tclient:\n\t\tcyclist = "+itoa(Join_GetIntFromIndex(iClientCyclistIDJoin,i))+"\n");
- //print("\t\tweek = "+itoa(Join_GetIntFromIndex(iClientWeekIndexJoin,i))+"\n");
-
- iWeekID=Join_GetIntFromIndex(iClientWeekIDJoin,i);
- Join_SetIntFromIndex(iServerWeekIDJoin,i,iWeekID);
-
- //print("\t------\n");
- i=i+1;
- }
-
- Subset_Destructor(iServerQuerySubset);
- Subset_Destructor(iClientQuerySubset);
-
- Database_SendSynchronization(DATABASE_SERVER);
- }
-
-